
package peerToPeerFacebook.proj;

/** Enumeration that describes how the call was executed. */
public enum Status
{
  /** Call executed without any problems and result is available */
  Success,
  
  /** Indicates taht call is still pending and result is not clear. This value will never be rised to the client. */
  CallPending,

  /**
   * AtMostOnce semantic was guarantee. Result object is not available. This
   * would be raised when server is not clear whether the function was executed
   * successfully (for example it crashed). In this case server has no
   * information what to do and executing same method could mean a violation of
   * At Most Once. Thus, the error is propagated back to client, so it could
   * make the best choice.
   * 
   * Result object is not available in this case.
   */
  AtMostOnce,

  /**
   * Exception was thrown by target. This does NOT include RuntimeException,
   * those will crash server anyways. Result Object contains exception itself
   * and can be casted to Exception
   */
  Exception
}
